iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 20
0
自我挑戰組

IOS app開發介紹系列 第 20

IOS app開發介紹 - ViewController容器之 UITabBarController 2

  • 分享至 

  • xImage
  •  

前一篇我們建立了UITabBarController,並為其增加頁面與設定tab item icon,這一篇我們要為tab item加上badge(即小紅點)和disable特定的tab item


1.tab item加上badge

2.disable特定的tab item


1.tab item加上badge

我們只要利用tabBarItem的屬性badgeValue去設定我們想要的字串

if let items = self.tabBar.items {
    items[index].badgeValue = val
}

例如我們把index設為0,val設為"1234",則結果如下圖:
https://ithelp.ithome.com.tw/upload/images/20181104/20111592cKbp074dO7.png


2.disable特定的tab item

假設我們不希望無特定權限的使用者去存取某個頁面,例如使用者沒有登入,但是你希望能夠讓他使用部分功能,而登入後才能用的功能要鎖起來,則這時候我們就需要disable特定的tab item,只要利用UITabBarControllerDelegate中的system callback shouldSelect即可,例如我們不希望未登入使用者使用最後一頁,則我們可以加入以下的code,記得一樣把tabBarController的delegate設為self,這樣才會執行到 UITabBarControllerDelegate的system callback:
法一:

extension TabBarViewController: UITabBarControllerDelegate {
    func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
        if let viewControllers = tabBarController.viewControllers {
            if viewController == viewControllers[0] {
                return false
            }
        }
        return true
    }
}

法二:

extension TabBarViewController: UITabBarControllerDelegate {
    func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
        if viewController is Page1ViewController {
            return false
        } else {
            return true
        }
    }
}

如果你disable的tab item是第一個viewController,即index為0.記得要先呼叫self.selectedIndex = 1,否則一開始第一個tab item還是會呈現選取狀態,當然也會顯示出該頁面.


以下為完整專案連結:
https://github.com/tgnivekucn/TabBarController2

ref:
https://medium.com/@nwy0206/swift%E7%AD%86%E8%A8%98-tab-bar-2ddba7d56587


上一篇
IOS app開發介紹 - ViewController容器之 UITabBarController
下一篇
IOS app開發介紹 - location service
系列文
IOS app開發介紹22
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言